package cn.chengpengper.seckill.activity.application.service;


import cn.chengpengper.seckill.activity.domain.model.entity.SeckillActivity;
import cn.chengpengper.seckill.common.model.dto.SeckillActivityDTO;

import java.util.Date;
import java.util.List;

/**
 * @author chengpeng.hu
 */
public interface SeckillActivityService {

    /**
     * 保存秒杀活动信息
     *
     * @param seckillActivityDTO 秒杀活动
     * @return 影响行数
     */
    void saveSeckillActivity(SeckillActivityDTO seckillActivityDTO);

    /**
     * 根据秒杀活动状态获取活动列表
     *
     * @param status 秒杀活动
     * @return 活动列表
     */
    List<SeckillActivity> getSeckillActivityList(Integer status);

    /**
     * 根据时间和状态获取活动列表
     *
     * @param currentTime 当前时间
     * @param status      活动状态
     * @return 活动列表
     */
    List<SeckillActivity> getSeckillActivityBetweenStartTimeAndEndTime(Date currentTime, Integer status);

    /**
     * 根据活动ID获取活动详情
     *
     * @param id 活动ID
     * @return 活动信息
     */
    SeckillActivity getSeckillActivityById(Long id);

    /**
     * 更新活动状态
     *
     * @param status 活动状态
     * @param id     活动ID
     * @return 影响行数
     */
    void updateStatus(Integer status, Long id);

    /**
     * 获取活动列表
     *
     * @param status  活动状态
     * @param version 版本号
     * @return 活动列表
     */
    List<SeckillActivityDTO> getSeckillActivityList(Integer status, Long version);

    /**
     * 根据状态和版本号获取活动详情
     *
     * @param id      活动ID
     * @param version 版本号
     * @return 活动详情
     */
    SeckillActivityDTO getSeckillActivity(Long id, Long version);

}
